const path = require('path');
const {smart} = require('webpack-merge');
const base = require('./webpack.base');
const webpack = require('webpack');
const SpeedMeasureWebpackPlugin = require('speed-measure-webpack-plugin');
const {BundleAnalyzerPlugin} = require('webpack-bundle-analyzer');
const smw = new SpeedMeasureWebpackPlugin();

module.exports = smw.wrap(smart(base,{
    mode:'development',
    //watch:true,
    //devtool:'source-map',
    optimization:{//这里放着优化的内容
        minimize:false
    },
    devServer:{
        contentBase:path.join(__dirname,'dist'),//这是我们的产出文件的根目录
        port:7070,
        host:'localhost',
        compress:true,//相当于会启动gzip压缩
        //before是不是相当于一个express应用中间件
        //这个before是一个钩子，此钩子会在web-dev-serer服务器启动之前执行
        //webapck-dev-server 其实也是一个express服务器   let app = express(); app.listen();
        before(app){//webpack-dev-server内部就是一个express服务器
            app.get('/api/users',function(req,res){
                console.log(req.url)
                res.json([{id:1,name:'zhufeng'}]);
            });
        }
        /* proxy:{
            "/api":{// /api/users  
                target:"http://localhost:3000",
                pathRewrite:{"^/api":""}
            }
        } */
    },
    module:{
        rules:[
            {
                test:/\.(jpg|png|gif|jpeg|svg)$/,//如果要require或import的文件是css的文件的话
                //从右向左处理CSS文件,oader是一个函数
                use:{
                    //url内部内置了file-loader
                    loader:'url-loader',
                    options:{//如果要加载的图片大小小于10K的话，就把这张图片转成base64编码内嵌到html网页中去
                        limit:0,
                        //要把图片拷贝到images目录下
                        outputPath:'images',
                        publicPath:'/images'
                    }
                }
            }
        ]
    },
    plugins:[
        new BundleAnalyzerPlugin(
            {
            analyzerMode: 'disabled', // 不启动展示打包报告的http服务器
             generateStatsFile: true, // 是否生成stats.json文件
            }
        ),
        //会把这些变量和值挂到全局对象上
        new webpack.DefinePlugin({
            PRODUCTION: JSON.stringify(false),
            VERSION: "1",
            EXPRESSION: "1+2",
            COPYRIGHT: {
                AUTHOR: JSON.stringify("珠峰培训")
            }
        })
    ]
}));